// 用户控制器，封装用户操作的具体方法
const { User } = require('../model')
const jwt = require('../util/jwt')
const { jwtSecret } = require('../config/config.default')
// 用户登录
exports.login = async (req, res, next) => {
  try {
    // 获取用户对象
    const user = req.user.toJSON()
    delete user.password
    // 生成token
    const token = jwt.sign({ userId: user._id }, jwtSecret)
    // 发送响应
    res.status(200).json({
      message: '登录成功',
      ...user,
      token
    })
  } catch (err) {
    next(err)
  }
}

// 用户注册
exports.registeUser = async (req, res, next) => {
  try {
    // 保存数据，注册成功
    let user = new User(req.body.user)
    await user.save()
    user = user.toJSON()
    delete user.password
    // 发送成功响应
    res.status(201).json({ user })
  } catch (err) {
    next(err)
  }
}

// 获取当前用户
exports.getCurrentUser = async (req, res, next) => {
  try {
    // 处理获取当前登录用户请求
    res.send(`获取当前登录用户成功，get ${req.path}`)
  } catch (err) {
    next(err)
  }
}

// 更新当前登录用户
exports.updateCurrentUser = async (req, res, next) => {
  try {
    // 处理更新当前登录用户请求
    res.send(`更新当前登录用户成功，put ${req.path}`)
  } catch (err) {
    next(err)
  }
}
